﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace StuertzDatenbank
{
    public partial class RollenGui : Form
    {
        private Sprachfile sprachfile;
        public RollenGui(Benutzer benutzer)
        {
            this.benutzer = benutzer;
            dbf = new DBF();
            sprachfile = new Sprachfile();
            rollenliste = new List<Rolle>();

            InitializeComponent();
            InitializeComponentChange();
            Refresh();
            laderollenliste();

            rechteverwaltung();
            this.Refresh();

        }

        private void InitializeComponentChange()
        {
            this.Text = sprachfile.Rollenverwaltung;
            this.Start.Text = sprachfile.Start;
            this.label1.Text = sprachfile.Rolle;
            this.label2.Text = sprachfile.Rechte;
            this.Passwordlabel.Text = sprachfile.Passwort;
            this.label4.Text = sprachfile.Daten;
            this.label5.Text = sprachfile.Hersteller;
            this.label9.Text = sprachfile.Profile;
            this.label8.Text = sprachfile.Auftrag;
            this.label7.Text = sprachfile.Kunde;
            this.label6.Text = sprachfile.Benutzer;
            this.label3.Text = sprachfile.Rolle;
            this.label10.Text = sprachfile.Einsehen;
            this.label11.Text = sprachfile.Erstellen;
            this.label12.Text = sprachfile.Bearbeiten;
            this.label13.Text = sprachfile.Loeschen;
            this.Speichern.Text = sprachfile.Speichern;

        }

        private void rechteverwaltung()
        {
            this.Speichern.Visible = false;
            if (benutzer.getRolle().getRechte().Rollebearbeiten | benutzer.getRolle().getRechte().Rolleerstellen)
            {
                this.Speichern.Visible = true;
            } 
        }

        private void laderollenliste()
        {

            this.rollenliste = this.dbf.alleRollenAusgeben();
            for (int i = 0; i < rollenliste.Count; i++)
            {
                this.Rollenbox.Items.Add(rollenliste[i].getRollenbezeichnung());
            }
            this.Refresh();


        }

        private void Start_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            startgui gui = new startgui(benutzer);
            this.Dispose();
            gui.ShowDialog();

        }

        private void Zurück_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            BenutzerverwaltungGui gui = new BenutzerverwaltungGui(benutzer);
            this.Dispose();
            gui.ShowDialog();
        }

        public Benutzer benutzer { get; set; }

        private void Rollenbox_SelectedIndexChanged(object sender, EventArgs e)
        {
            Rolle aktuellerolle = new Rolle(-1);
            aktuellerolle = this.rollenliste.ElementAt(this.Rollenbox.SelectedIndex);

            this.PasswordtextBox.Text = aktuellerolle.getPasswort();

            this.Datenbearbeitenbox.Checked = aktuellerolle.getRechte().Datenbearbeiten;
            this.Dateneinsehenbox.Checked = aktuellerolle.getRechte().Dateneinsehen;
            this.Datenerstellenbox.Checked = aktuellerolle.getRechte().Datenerstellen;
            this.Datenlöschenbox.Checked = aktuellerolle.getRechte().Datenloeschen;

            this.Herstellerbearbeitenbox.Checked = aktuellerolle.getRechte().Herstellerbearbeiten;
            this.Herstellereinsehenbox.Checked = aktuellerolle.getRechte().Herstellereinsehen;
            this.Herstellererstellenbox.Checked = aktuellerolle.getRechte().Herstellererstellen;
            this.Herstellerlöschenbox.Checked = aktuellerolle.getRechte().Herstellerloeschen;

            this.Profilbearbeitenbox.Checked = aktuellerolle.getRechte().Profilbearbeiten;
            this.Profileinsehenbox.Checked = aktuellerolle.getRechte().Profileinsehen;
            this.Profilerstellenbox.Checked = aktuellerolle.getRechte().Profilerstellen;
            this.Profillöschenbox.Checked = aktuellerolle.getRechte().Profilloeschen;

            this.Auftragbearbeitenbox.Checked = aktuellerolle.getRechte().Auftragbearbeiten;
            this.Auftrageinsehenbox.Checked = aktuellerolle.getRechte().Auftrageinsehen;
            this.Auftragerstellenbox.Checked = aktuellerolle.getRechte().Auftragerstellen;
            this.Auftraglöschenbox.Checked = aktuellerolle.getRechte().Auftragloeschen;

            this.Kundebearbeitenbox.Checked = aktuellerolle.getRechte().Kundebearbeiten;
            this.Kundeeinsehenbox.Checked = aktuellerolle.getRechte().Kundeeinsehen;
            this.Kundeerstellenbox.Checked = aktuellerolle.getRechte().Kundeerstellen;
            this.Kundelöschenbox.Checked = aktuellerolle.getRechte().Kundeloeschen;

            this.Benutzerbearbeitenbox.Checked = aktuellerolle.getRechte().Benutzerbearbeiten;
            this.Benutzereinsehenbox.Checked = aktuellerolle.getRechte().Benutzereinsehen;
            this.Benutzererstellenbox.Checked = aktuellerolle.getRechte().Benutzererstellen;
            this.Benutzerlöschenbox.Checked = aktuellerolle.getRechte().Benutzerloeschen;

            this.Rollebearbeitenbox.Checked = aktuellerolle.getRechte().Rollebearbeiten;
            this.Rolleeinsehenbox.Checked = aktuellerolle.getRechte().Rolleeinsehen;
            this.Rolleerstellenbox.Checked = aktuellerolle.getRechte().Rolleerstellen;
            this.Rollelöschenbox.Checked = aktuellerolle.getRechte().Rolleloeschen;

            this.Refresh();
        }

        public List<Rolle> rollenliste { get; set; }

        private void Speichern_Click(object sender, EventArgs e)
        {
            Rolle aktuellerolle = new Rolle(-1);
            System.Console.WriteLine(this.Rollenbox.Text);
            aktuellerolle.setRollenbezeichnung(this.Rollenbox.Text);
            aktuellerolle.setid(this.rollenliste.Capacity + 1);
            aktuellerolle.setPasswort(this.PasswordtextBox.Text);

            aktuellerolle.getRechte().Dateneinsehen = this.Dateneinsehenbox.Checked;
            aktuellerolle.getRechte().Datenerstellen = this.Datenerstellenbox.Checked;
            aktuellerolle.getRechte().Datenbearbeiten = this.Datenbearbeitenbox.Checked;
            aktuellerolle.getRechte().Datenloeschen = this.Datenlöschenbox.Checked;

            aktuellerolle.getRechte().Herstellereinsehen = this.Herstellereinsehenbox.Checked;
            aktuellerolle.getRechte().Herstellererstellen = this.Herstellererstellenbox.Checked;
            aktuellerolle.getRechte().Herstellerbearbeiten = this.Herstellerbearbeitenbox.Checked;
            aktuellerolle.getRechte().Herstellerloeschen = this.Herstellerlöschenbox.Checked;

            aktuellerolle.getRechte().Profileinsehen = this.Profileinsehenbox.Checked;
            aktuellerolle.getRechte().Profilerstellen = this.Profilerstellenbox.Checked;
            aktuellerolle.getRechte().Profilbearbeiten = this.Profilbearbeitenbox.Checked;
            aktuellerolle.getRechte().Profilloeschen = this.Profillöschenbox.Checked;

            aktuellerolle.getRechte().Auftrageinsehen = this.Auftrageinsehenbox.Checked;
            aktuellerolle.getRechte().Auftragerstellen = this.Auftragerstellenbox.Checked;
            aktuellerolle.getRechte().Auftragbearbeiten = this.Auftragbearbeitenbox.Checked;
            aktuellerolle.getRechte().Auftragloeschen = this.Auftraglöschenbox.Checked;

            aktuellerolle.getRechte().Kundeeinsehen = this.Kundeeinsehenbox.Checked;
            aktuellerolle.getRechte().Kundeerstellen = this.Kundeerstellenbox.Checked;
            aktuellerolle.getRechte().Kundebearbeiten = this.Kundebearbeitenbox.Checked;
            aktuellerolle.getRechte().Kundeloeschen = this.Kundelöschenbox.Checked;

            aktuellerolle.getRechte().Benutzereinsehen = this.Benutzereinsehenbox.Checked;
            aktuellerolle.getRechte().Benutzererstellen = this.Benutzererstellenbox.Checked;
            aktuellerolle.getRechte().Benutzerbearbeiten = this.Benutzerbearbeitenbox.Checked;
            aktuellerolle.getRechte().Benutzerloeschen = this.Benutzerlöschenbox.Checked;

            aktuellerolle.getRechte().Rolleeinsehen = this.Rolleeinsehenbox.Checked;
            aktuellerolle.getRechte().Rolleerstellen = this.Rolleerstellenbox.Checked;
            aktuellerolle.getRechte().Rollebearbeiten = this.Rollebearbeitenbox.Checked;
            aktuellerolle.getRechte().Rolleloeschen = this.Rollelöschenbox.Checked;

            bool neuerollehinzufügen = true;

            for (int i = 0; i < rollenliste.Count; i++)
            {
                if (rollenliste[i].getRollenbezeichnung() == aktuellerolle.getRollenbezeichnung())
                {
                    aktuellerolle.setid(rollenliste[i].getid());
                    rollenliste[i] = aktuellerolle;
                    this.Refresh();
                    this.dbf.rolleAendern(rollenliste[i]);
                    neuerollehinzufügen = false;
                    return;
                }


            }

            if (neuerollehinzufügen)
            {
                rollenliste.Add(aktuellerolle);
                this.Rollenbox.Items.Add(aktuellerolle.getRollenbezeichnung());
                this.dbf.rolleEintragen(aktuellerolle);
            }



            this.Refresh();
            this.Visible = false;
            BenutzerverwaltungGui gui = new BenutzerverwaltungGui(benutzer);
            this.Dispose();
            gui.ShowDialog();



        }
        /*

        private void NeueRolle_Click(object sender, EventArgs e)
        {
            
            Rolle aktuellerolle = new Rolle(-1);
            System.Console.WriteLine(this.Rollenbox.Text);
            aktuellerolle.setRollenbezeichnung(this.Rollenbox.Text);
            aktuellerolle.setid(this.rollenliste.Capacity + 1);
            aktuellerolle.setPasswort(this.PasswordtextBox.Text);

            aktuellerolle.getRechte().Dateneinsehen = this.Dateneinsehenbox.Checked;
            aktuellerolle.getRechte().Datenerstellen = this.Datenerstellenbox.Checked;
            aktuellerolle.getRechte().Datenbearbeiten = this.Datenbearbeitenbox.Checked;
            aktuellerolle.getRechte().Datenloeschen = this.Datenlöschenbox.Checked;

            aktuellerolle.getRechte().Herstellereinsehen = this.Herstellereinsehenbox.Checked;
            aktuellerolle.getRechte().Herstellererstellen = this.Herstellererstellenbox.Checked;
            aktuellerolle.getRechte().Herstellerbearbeiten = this.Herstellerbearbeitenbox.Checked;
            aktuellerolle.getRechte().Herstellerloeschen = this.Herstellerlöschenbox.Checked;

            aktuellerolle.getRechte().Profileinsehen = this.Profileinsehenbox.Checked;
            aktuellerolle.getRechte().Profilerstellen = this.Profilerstellenbox.Checked;
            aktuellerolle.getRechte().Profilbearbeiten = this.Profilbearbeitenbox.Checked;
            aktuellerolle.getRechte().Profilloeschen = this.Profillöschenbox.Checked;

            aktuellerolle.getRechte().Auftrageinsehen = this.Auftrageinsehenbox.Checked;
            aktuellerolle.getRechte().Auftragerstellen = this.Auftragerstellenbox.Checked;
            aktuellerolle.getRechte().Auftragbearbeiten = this.Auftragbearbeitenbox.Checked;
            aktuellerolle.getRechte().Auftragloeschen = this.Auftraglöschenbox.Checked;

            aktuellerolle.getRechte().Kundeeinsehen = this.Kundeeinsehenbox.Checked;
            aktuellerolle.getRechte().Kundeerstellen = this.Kundeerstellenbox.Checked;
            aktuellerolle.getRechte().Kundebearbeiten = this.Kundebearbeitenbox.Checked;
            aktuellerolle.getRechte().Kundeloeschen = this.Kundelöschenbox.Checked;

            aktuellerolle.getRechte().Benutzereinsehen = this.Benutzereinsehenbox.Checked;
            aktuellerolle.getRechte().Benutzererstellen = this.Benutzererstellenbox.Checked;
            aktuellerolle.getRechte().Benutzerbearbeiten = this.Benutzerbearbeitenbox.Checked;
            aktuellerolle.getRechte().Benutzerloeschen = this.Benutzerlöschenbox.Checked;

            aktuellerolle.getRechte().Rolleeinsehen = this.Rolleeinsehenbox.Checked;
            aktuellerolle.getRechte().Rolleerstellen = this.Rolleerstellenbox.Checked;
            aktuellerolle.getRechte().Rollebearbeiten = this.Rollebearbeitenbox.Checked;
            aktuellerolle.getRechte().Rolleloeschen = this.Rollelöschenbox.Checked;

         bool neuerollehinzufügen= true;

            for (int i = 0; i < rollenliste.Count; i++)
            {
                if (rollenliste[i].getRollenbezeichnung() == aktuellerolle.getRollenbezeichnung())
                {
                    aktuellerolle.setid(rollenliste[i].getid());
                    rollenliste[i] = aktuellerolle;
                    this.Refresh();
                    this.dbf.rolleAendern(rollenliste[i]);
                    neuerollehinzufügen = false;
                    return;
                }
                
                
            }

            if( neuerollehinzufügen)
                {
                    rollenliste.Add(aktuellerolle);
                    this.Rollenbox.Items.Add(aktuellerolle.getRollenbezeichnung());
                    this.dbf.rolleEintragen(aktuellerolle);
                }
            

           
            this.Refresh();

        }
         */

        public DBF dbf { get; set; }
    }
}
